package edu.ucsur.tp.libreriaelsaber.web.servlets;

import java.io.IOException;
import java.text.SimpleDateFormat;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import edu.ucsur.tp.libreriaelsaber.beans.UsuarioBean;
import edu.ucsur.tp.libreriaelsaber.dao.UsuarioDAO;
import edu.ucsur.tp.libreriaelsaber.dao.factories.DAOFactory;

public class FormUsuarioServlet extends HttpServlet {
  
  private static final long serialVersionUID = 1L;
  
  private static DAOFactory daoFactory = DAOFactory.getInstance(DAOFactory.MY_SQL);
  
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String codigoUsuario = (String)request.getSession().getAttribute("LibreriaElSaber_Usuario_Key");
    if (codigoUsuario != null) {
      //Llenamos un JavaBean de usuario desde la BD (con el codigo de usuario de la pag. anterior)
      //(luego esto será reemplazado por base de datos)
      UsuarioDAO usuarioDao = daoFactory.getUsuario();
      UsuarioBean usuario = usuarioDao.getUsuario(codigoUsuario);
      //Setear la variable del usuario recuperado
      request.setAttribute("usuario", usuario);
      //Invocar al JSP del formulario
      RequestDispatcher dispatcher = request.getRequestDispatcher("/form_usuario.jsp");
      dispatcher.forward(request, response);
    }
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String accion = request.getParameter("accion");
    try {
      if (accion != null) {
        if (accion.equals("guardar")) {
          //Creando una instancia nueva del usuario
          UsuarioBean usuario = new UsuarioBean();
          //Llenamos los campos con los setters del bean (desde el request)
          usuario.setCodigoUsuario(request.getParameter("codigoUsuario"));
          usuario.setNombres(request.getParameter("nombres"));
          usuario.setApellidos(request.getParameter("apellidos"));
          String fechaNacimiento = request.getParameter("fechaNacimiento");
          if (fechaNacimiento != null) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            usuario.setFechaNacimiento(sdf.parse(fechaNacimiento));
          }
          usuario.setCorreo(request.getParameter("correo"));
          String sueldoAnual = request.getParameter("sueldoAnual");
          if (sueldoAnual != null) {
            usuario.setSueldoAnual(Float.parseFloat(sueldoAnual));
          }
          usuario.setClave(request.getParameter("clave"));
          //Guardando los datos a la BD
          //(luego esto será reemplazado por base de datos)
          UsuarioDAO usuarioDao = daoFactory.getUsuario();
          usuarioDao.insertar(usuario);
          //Invocar al JSP del listado
          response.sendRedirect("listadoUsuariosUrl");
        }
      }
    } catch (Exception ex) {
      //Obtener el error generado
      request.setAttribute("LibreriaElSaber_Usuario_Error", "Error desconocido: " + ex.getMessage());
      //Invocar al JSP del formulario
      RequestDispatcher dispatcher = request.getRequestDispatcher("/form_usuario.jsp");
      dispatcher.forward(request, response);
      //Pintando el error en el log
      ex.printStackTrace();
    }
  }

}
